package router

import (
	"github.com/gin-gonic/gin"
	"net/http"
	v1 "next-vue-backend/api/v1"
	"next-vue-backend/middleware"
	"next-vue-backend/utils"
)

func InitRouter(g *gin.Engine) {

	//var middlewares []gin.HandlerFunc
	// Middlewares.
	g.Use(middleware.Logger())
	g.Use(gin.Recovery())
	//g.Use(middleware.NoCache)
	//g.Use(middleware.Options)
	//g.Use(middleware.Secure)
	g.Use(middleware.Cors())
	//g.Use(middlewares...)

	// 404 Handler.
	g.NoRoute(func(c *gin.Context) {
		c.String(http.StatusNotFound, "The incorrect API route.")
	})

	auth := g.Group("/api")
	auth.Use(middleware.JwtTokens())
	{
		//User模块

		auth.GET("users", v1.GetUserList)      // 获取用户列表
		auth.GET("user/:id", v1.GetUser)       // 获取单条用户信息
		auth.PUT("user/:id", v1.EditUser)      // 编辑用户
		auth.DELETE("user/:id", v1.DeleteUser) // 删除用户

		//Category模块
		auth.POST("category/add", v1.AddCategory)      // 添加分类
		auth.PUT("category/:id", v1.EditCategory)      // 编辑分类
		auth.DELETE("category/:id", v1.DeleteCategory) // 删除分类

		//Article模块
		auth.POST("article/add", v1.AddArticle)                           // 新增文章
		auth.GET("category/allArticleList/:id", v1.GetCategoryAllArticle) // 获取分类下的所有文章
		auth.PUT("article/:id", v1.EditArticle)                           // 编辑文章
		auth.DELETE("article/:id", v1.DeleteArticle)                      // 删除文章

		// Upload模块
		auth.POST("upload", v1.Upload) // 七牛上传

		// Comment模块
		auth.GET("comment/list", v1.GetCommentList)                              // 后台评论列表
		auth.DELETE("comment/:id", v1.DeleteComment)                             // 删除评论
		auth.PUT("comment/check/:id", v1.CheckedComment)                         // 通过评论
		auth.PUT("comment/close/:id", v1.CloseComment)                           // 关闭评论
		auth.POST("comment/add", v1.AddComment)                                  // 添加评论
		auth.GET("comment/articleComment/list/:id", v1.GetArticleCommentList)    //获取文章下的所有评论
		auth.GET("comment/articleComment/queryCommentList", v1.QueryCommentList) //获取文章下的所有评论

		// Verse模块
		auth.GET("verse/list", v1.GetVerseList)         // 后台诗词列表
		auth.POST("verse/add", v1.AddVerse)             // 添加诗词
		auth.PUT("verse/edit/:id", v1.EditVerse)        // 编辑诗词
		auth.DELETE("verse/delete/:id", v1.DeleteVerse) // 删除诗词

		// Idea模块
		auth.POST("idea/add", v1.AddIdea)             // 添加想法
		auth.PUT("idea/edit/:id", v1.EditIdea)        // 编辑想法
		auth.DELETE("idea/delete/:id", v1.DeleteIdea) // 删除想法
	}

	router := g.Group("/api")

	// 假设你要发送的文件位于当前目录下的 "static" 文件夹中
	// 并且文件名是通过路由参数 :filename 获取的
	router.GET("/file/:filename", func(c *gin.Context) {
		filename := c.Param("filename")
		// 你可以在这里添加文件存在性的检查，防止文件未找到的错误
		c.FileAttachment(filename, "your_custom_filename.ext")
	})
	{
		router.POST("login", v1.Login)                                // 登录
		router.POST("user/add", v1.AddUser)                           // 注册
		router.GET("category/list", v1.GetCategoryList)               // 分类列表
		router.GET("article/list", v1.GetArticleList)                 // 文章列表
		router.GET("category/singleArticle/:id", v1.GetSingleArticle) // 单篇文章
		router.GET("comment/singleComment", v1.GetSingleComment)      // 单条评论
		router.GET("comment/frontList", v1.GetCommentListFront)       // 前端评论列表
		router.GET("comment/count", v1.GetCommentCount)               // 评论数量
		router.GET("verse", v1.GetRandomVerse)                        // 获取随机诗词
		router.GET("idea/list", v1.GetIdeaList)                       // 想法列表
	}

	err := g.Run(utils.HttpPort)
	if err != nil {
		return
	}
}
